Light and Population

Manipulating a choropleth overlay to approximate underlying satellite map tiles

Mashoedoe
26 July 2015

Population distribution and inequality

wards_SA_ordered <- readRDS("assets/wards_SA_ordered.rds")
wards_SA_ordered@data$DENSITY <- round(wards_SA_ordered@data$DENSITY, digits=1)

The distribution of population density accross South Africa is very skewed. Mean population density in South Africa is 42.4 people/km2. Another consideration is the unequal distribution of electricity (which is less kWh/person now than it was at the end of Apartheid in 1994.

library(ggplot2)
ggplot(aes(x=DENSITY), data=wards_SA_ordered@data) + 
  geom_histogram(binwidth=1000,color = "white") +
  ggtitle("Population density in South Africa's 4277 Wards") + 
  labs(x="Density in people/sq km",y="Number of wards")

plot of chunk histogram

<!--htmlpreserve--><iframe src="app4236ebdd7dd636007bec012ae5714888/?w=&subapp_=1" width="100%" height="400" class="shiny-frame"><!--/html_preserve-->



South Africa at night from the VIIRS polar orbit satellite without a ward population density choropleth overlay






What the choropleth overlay looks like with the threshold at the 50th percentile of ward population density



What the choropleth overlay looks like with the threshold at the 70th percentile of ward population density






What the choropleth overlay looks like with the threshold at the 95th percentile of ward population density

<!--html_preserve-->

<!--/html_preserve-->

Interactive Quiz

What is 1 + 1?

  1. 1
  2. 2
  3. 3
  4. 4

This is a hint

This is an explanation

Interactive Chart

Interactive Console

require(googleVis)
M1 <- gvisMotionChart(Fruits, idvar = 'Fruit', timevar = 'Year')
print(M1, tag = 'chart')

Interactive Chart with Shiny Controls

slidifyUI(
  sidebarPanel(
    selectInput('sex', 'Choose Sex', c('Male', 'Female')),
    selectInput('type', 'Choose Type',
      c('multiBarChart', 'multiBarHorizontalChart')
    )
  ),
  mainPanel(
    tags$div(id = 'nvd3plot', class='shiny-html-output nvd3 rChart')
  )
)
## <div class="row-fluid">
##   <div class="col-sm-4">
##     <form class="well">
##       <div class="form-group shiny-input-container">
##         <label class="control-label" for="sex">Choose Sex</label>
##         <div>
##           <select id="sex"><option value="Male" selected>Male</option>
## <option value="Female">Female</option></select>
##           <script type="application/json" data-for="sex" data-nonempty="">{}</script>
##         </div>
##       </div>
##       <div class="form-group shiny-input-container">
##         <label class="control-label" for="type">Choose Type</label>
##         <div>
##           <select id="type"><option value="multiBarChart" selected>multiBarChart</option>
## <option value="multiBarHorizontalChart">multiBarHorizontalChart</option></select>
##           <script type="application/json" data-for="type" data-nonempty="">{}</script>
##         </div>
##       </div>
##     </form>
##   </div>
##   <div class="col-sm-8">
##     <div id="nvd3plot" class="shiny-html-output nvd3 rChart"></div>
##   </div>
## </div>

Interactive Console

require(rCharts)
a <- Highcharts$new()
a$chart(type = "spline")
a$series(data = c(1, 3, 2, 4, 5, 4, 6, 2, 3, 5, NA), dashStyle = "longdash")
a$series(data = c(NA, 4, 1, 3, 4, 2, 9, 1, 2, 3, 4), dashStyle = "shortdot")
a$legend(symbolWidth = 80)
a$print('chart3')

Results = Markup

require(xtable)
options(xtable.type = 'html')
xtable(head(mtcars))
## <!-- html table generated in R 3.2.1 by xtable 1.7-4 package -->
## <!-- Wed Jul 29 03:59:03 2015 -->
## <table border=1>
## <tr> <th>  </th> <th> mpg </th> <th> cyl </th> <th> disp </th> <th> hp </th> <th> drat </th> <th> wt </th> <th> qsec </th> <th> vs </th> <th> am </th> <th> gear </th> <th> carb </th>  </tr>
##   <tr> <td align="right"> Mazda RX4 </td> <td align="right"> 21.00 </td> <td align="right"> 6.00 </td> <td align="right"> 160.00 </td> <td align="right"> 110.00 </td> <td align="right"> 3.90 </td> <td align="right"> 2.62 </td> <td align="right"> 16.46 </td> <td align="right"> 0.00 </td> <td align="right"> 1.00 </td> <td align="right"> 4.00 </td> <td align="right"> 4.00 </td> </tr>
##   <tr> <td align="right"> Mazda RX4 Wag </td> <td align="right"> 21.00 </td> <td align="right"> 6.00 </td> <td align="right"> 160.00 </td> <td align="right"> 110.00 </td> <td align="right"> 3.90 </td> <td align="right"> 2.88 </td> <td align="right"> 17.02 </td> <td align="right"> 0.00 </td> <td align="right"> 1.00 </td> <td align="right"> 4.00 </td> <td align="right"> 4.00 </td> </tr>
##   <tr> <td align="right"> Datsun 710 </td> <td align="right"> 22.80 </td> <td align="right"> 4.00 </td> <td align="right"> 108.00 </td> <td align="right"> 93.00 </td> <td align="right"> 3.85 </td> <td align="right"> 2.32 </td> <td align="right"> 18.61 </td> <td align="right"> 1.00 </td> <td align="right"> 1.00 </td> <td align="right"> 4.00 </td> <td align="right"> 1.00 </td> </tr>
##   <tr> <td align="right"> Hornet 4 Drive </td> <td align="right"> 21.40 </td> <td align="right"> 6.00 </td> <td align="right"> 258.00 </td> <td align="right"> 110.00 </td> <td align="right"> 3.08 </td> <td align="right"> 3.21 </td> <td align="right"> 19.44 </td> <td align="right"> 1.00 </td> <td align="right"> 0.00 </td> <td align="right"> 3.00 </td> <td align="right"> 1.00 </td> </tr>
##   <tr> <td align="right"> Hornet Sportabout </td> <td align="right"> 18.70 </td> <td align="right"> 8.00 </td> <td align="right"> 360.00 </td> <td align="right"> 175.00 </td> <td align="right"> 3.15 </td> <td align="right"> 3.44 </td> <td align="right"> 17.02 </td> <td align="right"> 0.00 </td> <td align="right"> 0.00 </td> <td align="right"> 3.00 </td> <td align="right"> 2.00 </td> </tr>
##   <tr> <td align="right"> Valiant </td> <td align="right"> 18.10 </td> <td align="right"> 6.00 </td> <td align="right"> 225.00 </td> <td align="right"> 105.00 </td> <td align="right"> 2.76 </td> <td align="right"> 3.46 </td> <td align="right"> 20.22 </td> <td align="right"> 1.00 </td> <td align="right"> 0.00 </td> <td align="right"> 3.00 </td> <td align="right"> 1.00 </td> </tr>
##    </table>